package com.marvels.financial.pay.hjpay.service;

import java.util.Map;

import com.marvels.common.dto.pay.MarvelsPayResultDTO;
import com.marvels.common.exception.MarvelsBusinessException;
import com.marvels.financial.pay.dto.MerchantRechargeCallBackDTO;
import com.marvels.financial.pay.dto.MerchantRechargeDTO;
import com.marvels.financial.pay.hjpay.dto.AgreementPaymentDTO;
import com.marvels.financial.pay.hjpay.dto.AgreementPaymentQueryDTO;
import com.marvels.financial.pay.hjpay.dto.AgreementPaymentSignDTO;
import com.marvels.financial.pay.hjpay.dto.AgreementPaymentSmsDTO;
import com.marvels.financial.pay.hjpay.dto.DirectPaymentDTO;
import com.marvels.financial.pay.hjpay.dto.DirectPaymentQueryDTO;
import com.marvels.financial.pay.hjpay.dto.DirectPaymentSmsDTO;
import com.marvels.financial.pay.hjpay.dto.LoanPaymentCallBackDTO;
import com.marvels.financial.pay.hjpay.dto.MerchantRechargePayDTO;
import com.marvels.financial.pay.hjpay.dto.PaymentCallBackDTO;
import com.marvels.financial.pay.hjpay.dto.SinglePaymentDTO;
import com.marvels.financial.pay.hjpay.dto.SinglePaymentQueryDTO;

/**
 * 汇聚支付服务
 * @author 唐佩文
 *
 */
public interface HjPayApi {
	
	/**
	 * 单笔代付接口
	 * @param singlePaymentDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> singlePayment(SinglePaymentDTO singlePaymentDTO) throws MarvelsBusinessException;
	
	/**
	 * 单笔代付结果查询接口
	 * @param singlePaymentQueryDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> singlePaymentQuery(SinglePaymentQueryDTO singlePaymentQueryDTO) throws MarvelsBusinessException;
	
	
	
	/**
	 * 快捷支付-协议支付短信接口
	 * @param agreementPaymentSmsDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> agreementPaymentSms(AgreementPaymentSmsDTO agreementPaymentSmsDTO) throws MarvelsBusinessException;
	
	
	
	/**
	 * 快捷支付-协议支付短信接口
	 * @param agreementPaymentSignDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> agreementPaymentSign(AgreementPaymentSignDTO agreementPaymentSignDTO) throws MarvelsBusinessException;
	
	
	
	/**
	 * 协议代扣
	 * @param agreementPaymentDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> agreementPayment(AgreementPaymentDTO agreementPaymentDTO) throws MarvelsBusinessException;
	
	
	
	
	/**
	 * 协议代扣结果查询
	 * @param agreementPaymentDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> agreementPaymentQuery(AgreementPaymentQueryDTO agreementPaymentQueryDTO) throws MarvelsBusinessException;
	
	
	
	/**
	 * 快捷 支付短信接口
	 * @param directPaymentDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> directPaymentSms(DirectPaymentSmsDTO directPaymentSmsDTO) throws MarvelsBusinessException;
	
	
	/**
	 * 直接支付
	 * @param directPaymentDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> directPayment(DirectPaymentDTO directPaymentDTO) throws MarvelsBusinessException;
	
	
	/**
	 * 代扣回调通知
	 * @param callBackDTO
	 * @throws MarvelsBusinessException
	 */
	public void ybPaymentNotify(PaymentCallBackDTO callBackDTO) throws MarvelsBusinessException;
	
	
	
	/**
	 * 代付结果异步通知
	 * @param callBackDTO
	 * @throws MarvelsBusinessException
	 */
	public void hjPaymentCallBack(LoanPaymentCallBackDTO callBackDTO) throws MarvelsBusinessException;
	
	
	/**
	 * 直接支付结果查询
	 * @param directPaymentDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object> directPaymentQuery(DirectPaymentQueryDTO directPaymentQueryDTO) throws MarvelsBusinessException;
	
	
	
	/**
	 * 商户充值
	 * @param merchantRechargeDTO
	 * @return
	 */
	public Map<String, Object> merchantRecharge(MerchantRechargePayDTO merchantRechargeDTO) throws MarvelsBusinessException;
	
	
	
	/**
	 * 商户充值回调
	 * @param merchantRechargeCallBackDTO
	 */
	public  Map<String, Object>  hjMerchantRechargeCallBack(MerchantRechargeCallBackDTO merchantRechargeCallBackDTO) throws MarvelsBusinessException;
	
	
	
	/**
	 * 商户余额查询
	 * @param merchantRechargeDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public Map<String, Object>  merchantBalance() throws MarvelsBusinessException;
	
	
	
 }
